home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software of the Month Club 2000 October
/
Software of the Month - Ultimate Collection Shareware 277.iso
/
pc
/
PROGRAMS
/
UTILITY
/
WINLINUX
/
DATA1.CAB
/
programs_-_aalib
/
INCLUDE
/
AALIB.H
< prev
Wrap
C/C++ Source or Header
|
1999-09-17
|
9KB
|
292 lines
#ifndef __AALIB_INCLUDED__
#define __AALIB_INCLUDED__
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
#define AA_LIB_VERSION 1
#define AA_LIB_MINNOR 2
#define AA_LIB_VERSIONCODE 102000
#define AA_NATTRS 5
#define AA_NPARAMS 5
#define AA_NONE 0 /*special keycodes */
#define AA_RESIZE 258
#define AA_MOUSE 259
#define AA_UP 300
#define AA_DOWN 301
#define AA_LEFT 302
#define AA_RIGHT 303
#define AA_BACKSPACE 304
#define AA_ESC 305
#define AA_UNKNOWN 400
#define AA_RELEASE 65536
#define AA_NORMAL_MASK 1 /*masks for attributes */
#define AA_DIM_MASK 2
#define AA_BOLD_MASK 4
#define AA_BOLDFONT_MASK 8
#define AA_REVERSE_MASK 16
#define AA_ALL 128
#define AA_EIGHT 256
#define AA_EXTENDED (AA_ALL|AA_EIGHT)
#define AA_NORMAL 0 /*attribute numbers */
#define AA_DIM 1
#define AA_BOLD 2
#define AA_BOLDFONT 3
#define AA_REVERSE 4
#define AA_SPECIAL 5
#define AA_ERRORDISTRIB 1 /*dithering types + AA_NONE */
#define AA_FLOYD_S 2
#define AA_DITHERTYPES 3
#define AA_BUTTON1 1 /*mouse */
#define AA_BUTTON2 2
#define AA_BUTTON3 4
#define AA_MOUSEMOVEMASK 1
#define AA_MOUSEPRESSMASK 2
#define AA_PRESSEDMOVEMASK 4
#define AA_MOUSEALLMASK 7
#define AA_HIDECURSOR 8
#define AA_SENDRELEASE 1
#define AA_KBDALLMASK 1
#define AA_USE_PAGES 1 /*save format flags */
#define AA_NORMAL_SPACES 8
struct aa_hardware_params {
struct aa_font *font;
int supported;
int minwidth, minheight;
int maxwidth, maxheight;
int recwidth, recheight;
int mmwidth, mmheight;
int width, height;
double dimmul, boldmul;
};
struct aa_context {
struct aa_driver *driver;
struct aa_kbddriver *kbddriver;
struct aa_mousedriver *mousedriver;
struct aa_hardware_params params,driverparams;
int mulx, muly;
int imgwidth, imgheight;
unsigned char *imagebuffer;
unsigned char *textbuffer;
unsigned char *attrbuffer;
unsigned short *table;
unsigned short *filltable;
struct parameters *parameters;
int cursorx, cursory, cursorstate;
int mousex, mousey, buttons,mousemode;
void (*resizehandler) (struct aa_context *);
void *driverdata;
void *kbddriverdata;
void *mousedriverdata;
};
struct aa_driver {
char *shortname, *name;
int (*init) (struct aa_hardware_params *, void *, struct aa_hardware_params *,void **);
void (*uninit) (struct aa_context *);
void (*getsize) (struct aa_context *, int *, int *);
void (*setattr) (struct aa_context *, int);
void (*print) (struct aa_context *, char *);
void (*gotoxy) (struct aa_context *, int, int);
void (*flush) (struct aa_context *);
void (*cursormode) (struct aa_context *, int);
};
struct aa_kbddriver {
char *shortname, *name;
int flags;
int (*init) (struct aa_context *, int mode);
void (*uninit) (struct aa_context *);
int (*getkey) (struct aa_context *, int);
};
struct aa_mousedriver {
char *shortname, *name;
int flags;
int (*init) (struct aa_context *, int mode);
void (*uninit) (struct aa_context *);
void (*getmouse) (struct aa_context *, int *, int *, int *);
void (*cursormode) (struct aa_context *,int);
};
struct aa_renderparams {
int bright, contrast;
float gamma;
int dither;
int inversion;
int randomval;
};
struct aa_edit {
int maxsize;
char *data;
int cursor;
int clearafterpress;
int printpos;
int x, y, size;
struct aa_context *c;
};
struct parameters {
unsigned int p[AA_NPARAMS];
};
struct aa_font {
unsigned char *data;
int height;
char *name;
char *shortname;
};
struct aa_format {
int width, height;
int pagewidth, pageheight;
int flags;
int supported;
struct aa_font *font;
char *formatname;
char *extension;
/*fields after this line may change in future versions*/
char *head;
char *end;
char *newline;
char *prints[AA_NATTRS];
char *begin[AA_NATTRS];
char *ends[AA_NATTRS];
char **conversions;
};
struct aa_savedata {
char *name;
struct aa_format *format;
FILE *file; /*You might specify filename by this way too, in case name is NULL*/
};
struct aa_linkedlist {
char *text;
struct aa_linkedlist *next, *previous;
};
typedef struct aa_context aa_context;
typedef struct aa_linkedlist aa_linkedlist;
typedef struct aa_linkedlist aa_reclist;
typedef struct aa_renderparams aa_renderparams;
typedef struct aa_hardwareparams aa_hardware_params;
typedef struct aa_driver aa_driver;
typedef struct aa_font aa_font;
typedef struct aa_format aa_format;
typedef struct aa_savedata aa_savedata;
typedef int aa_palette[256];
extern struct aa_driver save_d, mem_d;
extern char *aa_help;
extern struct aa_format aa_htmlk_format, *aa_formats[];
extern struct aa_format aa_nhtml_format, aa_html_format, aa_html_alt_format,
aa_ansi_format, aa_text_format, aa_more_format, aa_hp_format,
aa_hp2_format, aa_irc_format, aa_zephyr_format;
extern struct aa_font *aa_fonts[];
extern int nfonts;
extern struct aa_font aa_font8, aa_font14, aa_font16, aa_font9, aa_fontline, aa_fontgl,
aa_fontX13, aa_fontX16, aa_fontX13B, aa_fontcourier, aa_fontvyhen;
extern char *aa_dithernames[];
extern struct aa_hardware_params aa_defparams;
extern struct aa_renderparams aa_defrenderparams;
extern struct aa_driver *aa_drivers[], curses_d, dos_d, linux_d, slang_d,
stdout_d, stderr_d, X11_d, os2vio_d;
extern struct aa_kbddriver *aa_kbddrivers[], kbd_curses_d, kbd_slang_d,
kbd_stdin_d, kbd_dos_d, kbd_X11_d, kbd_os2_d;
extern struct aa_mousedriver *aa_mousedrivers[], mouse_curses_d, mouse_gpm_d,
mouse_X11_d, mouse_dos_d, mouse_os2_d;
extern aa_linkedlist *aa_kbdrecommended, *aa_mouserecommended, *aa_displayrecommended;
#define aa_callnonull(c,x) ((x)!=NULL?((x)(c)):0)
#define aa_scrwidth(a) ((a)->params.width)
#define aa_scrheight(a) ((a)->params.height)
#define aa_mmwidth(a) ((a)->params.mmwidth)
#define aa_mmheight(a) ((a)->params.mmheight)
#define aa_imgwidth(a) ((a)->imgwidth)
#define aa_imgheight(a) ((a)->imgheight)
#define aa_putpixel(c,x,y,color) ((c)->imagebuffer[(x)+(y)*(aa_imgwidth(c))]=(color))
#define aa_image(c) ((c)->imagebuffer)
#define aa_text(c) ((c)->textbuffer)
#define aa_attrs(c) ((c)->attrbuffer)
#define aa_setpalette(palette,index,r,g,b) ((palette)[index]=(((r)*30+(g)*59+(b)*11)>>8))
#define aa_recommendhikbd(t) aa_recommendhi(&aa_kbdrecommended,t);
#define aa_recommendhimouse(t) aa_recommendhi(&aa_mouserecommended,t);
#define aa_recommendhidisplay(t) aa_recommendhi(&aa_displayrecommended,t);
#define aa_recommendlowkbd(t) aa_recommendlow(&aa_kbdrecommended,t);
#define aa_recommendlowmouse(t) aa_recommendlow(&aa_mouserecommended,t);
#define aa_recommendlowdisplay(t) aa_recommendlow(&aa_displayrecommended,t);
/*automatical init functions */
aa_context *aa_autoinit(struct aa_hardware_params *params);
int aa_autoinitkbd(struct aa_context *context, int mode);
int aa_autoinitmouse(struct aa_context *c, int mode);
void aa_recommendhi(aa_linkedlist ** l, char *name);
void aa_recommendlow(aa_linkedlist ** l, char *name);
char *aa_getfirst(aa_linkedlist ** l);
/*init functions */
aa_context *aa_init(struct aa_driver *driver, struct aa_hardware_params *defparams, void *driverdata);
int aa_initkbd(struct aa_context *context, struct aa_kbddriver *drv, int mode);
int aa_initmouse(struct aa_context *c, struct aa_mousedriver *d, int mode);
/*uninicializing functions */
void aa_close(aa_context * c);
void aa_uninitkbd(struct aa_context *context);
void aa_uninitmouse(struct aa_context *context);
/*rendering functions */
void aa_fastrender(aa_context * c, int x1, int y1, int x2, int y2);
void aa_render(aa_context * c, aa_renderparams * p, int x1, int y1, int x2, int y2);
void aa_renderpalette(aa_context * c, aa_palette table, aa_renderparams * p, int x1, int y1, int x2, int y2);
aa_renderparams *aa_getrenderparams(void);
void aa_flush(aa_context * c);
/*text i/o functions */
void aa_puts(aa_context * c, int x, int y, int attr, char *s);
int aa_printf(aa_context *c, int x, int y, int attr, char *fmt, ...);
void aa_gotoxy(aa_context * c, int x, int y);
void aa_hidecursor(aa_context * c);
void aa_showcursor(aa_context * c);
void aa_getmouse(aa_context * c, int *x, int *y, int *b);
void aa_hidemouse(aa_context *c);
void aa_showmouse(aa_context *c);
/*hardware parameters control */
int aa_registerfont(struct aa_font *f);
void aa_setsupported(aa_context * c, int supported);
void aa_setfont(aa_context * c, struct aa_font *font);
/*keyboard functions */
int aa_getevent(aa_context * c, int wait);
int aa_getkey(aa_context * c, int wait);
/*resize functions */
int aa_resize(aa_context * c);
void aa_resizehandler(aa_context * c, void (*handler) (aa_context *));
/*utility */
int aa_parseoptions(struct aa_hardware_params *p, aa_renderparams * r, int *argc, char **argv);
void aa_edit(aa_context * c, int x, int y, int size, char *s, int maxsize);
struct aa_edit *aa_createedit(aa_context * c, int x, int y, int size, char *s, int maxsize);
void aa_editkey(struct aa_edit *e, int c);
#ifdef __cplusplus
}
#endif
#endif